package com.qabaco.odondata.model.entities;

import java.io.Serializable;

import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.ColumnResult;
import javax.persistence.Entity;
import javax.persistence.EntityResult;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SqlResultSetMapping;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@NamedQueries({
  @NamedQuery(name = "Credito.findAll", query = "select o from Credito o")
})
@SqlResultSetMapping(name = "qCreditosByFiltro",
                     entities={@EntityResult(entityClass = Credito.class)},
                     columns ={@ColumnResult(name="APELLIDO"),
                               @ColumnResult(name="NOMBRE")} 
                     )
@Table(name = "creditos")
public class Credito implements Serializable {
    private Integer cantidad;
    private Integer estado;
    @Column(name="FECHA_HORA")
    private Timestamp fechaHora;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(nullable = false)
    private Integer id;
    @Column(name="ID_USUARIO")
    private Integer idUsuario;
    private Double monto;
    @Column(name="TIPO_MOVIMIENTO")
    private Integer tipoMovimiento;
    
    @Column(name="MP_PREFERENCE_ID")
    private String mpPreferenceId;
    @Column(name="MP_COLLECTION_ID")
    private String mpCollectionId;
    @Column(name="MP_PAYMENT_TYPE")
    private String mpPaymentType;
    
    @Column(name="TIPO_PRODUCTO")
    private Integer tipoProducto;    
    @Column(name="MONTO_PRODUCTO")
    private Double montoProducto;

    @Transient
    private String nombreUsuario;

    public Credito() {
    }

    public Credito(Integer cantidad, Integer estado, Timestamp fechaHora,
                   Integer id, Integer idUsuario, Double monto,
                   Integer tipoMovimiento) {
        this.cantidad = cantidad;
        this.estado = estado;
        this.fechaHora = fechaHora;
        this.id = id;
        this.idUsuario = idUsuario;
        this.monto = monto;
        this.tipoMovimiento = tipoMovimiento;
    }

    public Integer getCantidad() {
        return cantidad;
    }

    public void setCantidad(Integer cantidad) {
        this.cantidad = cantidad;
    }

    public Integer getEstado() {
        return estado;
    }

    public void setEstado(Integer estado) {
        this.estado = estado;
    }

    public Timestamp getFechaHora() {
        return fechaHora;
    }

    public void setFechaHora(Timestamp fechaHora) {
        this.fechaHora = fechaHora;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(Integer idUsuario) {
        this.idUsuario = idUsuario;
    }

    public Double getMonto() {
        return monto;
    }

    public void setMonto(Double monto) {
        this.monto = monto;
    }

    public Integer getTipoMovimiento() {
        return tipoMovimiento;
    }

    public void setTipoMovimiento(Integer tipoMovimiento) {
        this.tipoMovimiento = tipoMovimiento;
    }

    public void setNombreUsuario(String nombreUsuario) {
        this.nombreUsuario = nombreUsuario;
    }

    public String getNombreUsuario() {
        return nombreUsuario;
    }

    public void setMpPreferenceId(String mpPreferenceId) {
        this.mpPreferenceId = mpPreferenceId;
    }

    public String getMpPreferenceId() {
        return mpPreferenceId;
    }

    public void setMpCollectionId(String mpCollectionId) {
        this.mpCollectionId = mpCollectionId;
    }

    public String getMpCollectionId() {
        return mpCollectionId;
    }

    public void setMpPaymentType(String mpPaymentType) {
        this.mpPaymentType = mpPaymentType;
    }

    public String getMpPaymentType() {
        return mpPaymentType;
    }

    public void setTipoProducto(Integer tipoProducto) {
        this.tipoProducto = tipoProducto;
    }

    public Integer getTipoProducto() {
        return tipoProducto;
    }

    public void setMontoProducto(Double montoProducto) {
        this.montoProducto = montoProducto;
    }

    public Double getMontoProducto() {
        return montoProducto;
    }
}
